﻿(function($) {
	$.fn.mbeditor = function(options) {
		var opts = $.extend({}, $.fn.mbeditor.defaults, options);
		try {
			opts.cur = $(this).css({
				'max-height' : opts.height,
				'height' : opts.height,
				'max-width' : opts.width,
				'width' : opts.width
			}).hammer({
				prevent_default : true
			}).bind("tap", function(ev) {
				insertCursor(ev, opts);
				createMenu(ev, opts,'text');
			}).hammer({
				prevent_default : true
			}).bind("hold", function(ev) {
				//createMenu(ev, opts)
			}).hammer({
				prevent_default : true
			}).bind("drag", function(ev) {
				selectMenuOpt(ev, opts)
			}).hammer({
				prevent_default : true
			}).bind("dragend", function(ev) {
				invokeMenuOpt(ev, opts);
			}).hammer({
				prevent_default : true
			}).bind("release", function(ev) {
				//releaseMenu(ev, opts);
			});
		} catch (e) {
			alert(e);
		}
	};
	$.fn.mbeditor.defaults = {
		width : 860,
		height : 480,
		menu_width : 210,
		menu_height : 210,
		defaultCursor : ".MbEditorCursor",
		onedit : function(ev) {
		}
	};
	$.fn.mbeditor.curCursorPosition = {
		x : 0,
		y : 0
	};
	$.fn.mbeditor.DefaultMenu = "<form action='' method='POST' class='MbEditorForm'><div class='Menu'>" + "<table>" + "<tr>" + "<td id='left_up'></td>" + "<td id='up'>图片</td>" + "<td id='right_up'></td>" + "<tr>" + "<tr>" + "<td id='left'>粗体</td>"
			+ "<td id='center'><input class='MbEditorTextInput MbEditorInput' type='text'/><input class='MbEditorFileInput MbEditorInput' type='file'/></td>" + "<td id='right'>链接</td>" + "<tr>" + "<tr>" + "<td></td>" + "<td id='down'>斜体</td>" + "<td></td>" + "<tr>" + "</table>" + "</div></form>";
	$.fn.mbeditor.DefaultCursor = "<span class='MbEditorCursor'>|</span>"
	$.fn.mbeditor.DefaultEditorPanel = "<div class='MbEditorPanel'></div>"
	
	var createMenu = function(ev, opts,default_opt) {
		var pos = ev.position;
		
		opts.menu = $(opts.cur.mbeditor.DefaultMenu).css({
			'position' : 'absolute',
			'left' : pos[0].x - opts.menu_width / 2,
			'top' : pos[0].y - opts.menu_height / 2
		})
		opts.cur.find("form").remove();
		opts.cur.append(opts.menu);
		switch(default_opt){
			case "text":
				var input = opts.menu.find(".MbEditorInput");
				input.unbind("keydown");
				input.hide();
				var input = opts.menu.find(".MbEditorTextInput");
				input.keydown(function(ev){
					alert(ev);
				});
				input.show().focus();
				opts.status = default_opt;
			break;
			case "file":
				var input = opts.menu.find(".MbEditorInput");
				input.hide();
				var input = opts.menu.find(".MbEditorFileInput");
				input.show().click();
				break;
			}
	};
	
	var optInputText = function(e,t){
		if(t && t.length!=0){
			e.after(t);
		}
	}
	
	var selectMenuOpt = function(ev) {
		if ($(".Menu").length > 0) {
			var dir = ev.direction;
			var touches = ev.touches[0];
			var fun = $(".Menu").find("#" + dir);
			$(".Menu #center").html(fun.html());
			switch (dir) {
			case "up":
				$("#left_up").css({});
				$("#right_up").css({});
				break;
			}
		}
	};
	var invokeMenuOpt = function(ev,opts) {
		if ($(".Menu").length > 0) {
			var dir = ev.direction;
			var touches = ev.touches[0];
			var fun = $(".Menu").find("#" + dir);
			$(".Menu #center").html(fun.html());
		}
		opts.status = 'invoke';
	};
	var releaseMenu = function(ev) {
		$(".Menu").delay(1000).remove();
	};

	var insertCursor = function(ev, opts) {
		/*$(opts.defaultCursor).remove();
		var cursor = $(opts.cur.mbeditor.DefaultCursor);
		setInterval(function() {
			cursor.toggle();
		}, 1000);
		opts.cur.append(cursor);*/
	};
	var insertCursorBefore = function(e, opts) {
		var cursor = $(opts.defaultCursor).remove();
		$(e).after(cursor);
	}
})(jQuery);